package com.sojson.project.sys.dept.controller.param.verify;

import java.io.IOException;

import com.sojson.project.sys.dept.entity.po.Dept;
import com.sojson.result.Result;
import com.sojson.util.ExpUtil;
import com.sojson.util.StringUtil;
import com.sojson.util.param.ParamUtil;

/**
 * 部门信息表控制器参数验证
 * 
 * @author liu
 * @date 2021-03-16
 */
public class DeptParamVerify {

    /**
     * 单条插入
     * 
     * @param dto
     * @return
     * @throws IOException 
     */
    public static Result<Boolean> save(Dept dto) throws IOException {
        String parentId = dto.getParentId();
        if (StringUtil.isBlank(parentId)) {
            return Result.fail("上级部门不能为空！");
        }
        ParamUtil.verifyDept(parentId);
        if (StringUtil.isBlank(dto.getName())) {
            return Result.fail("部门名称不能为空！");
        }

        return init(dto);
    }

    /**
     * 通过id更新
     * 
     * @param dto
     * @return
     * @throws IOException 
     */
    public static Result<Boolean> updateById(Dept dto) throws IOException {
        String id = dto.getId();
        if (StringUtil.isBlank(id)) {
            return Result.fail("ID不能为空！");
        }
        ParamUtil.verifyDept(id);
        String parentId = dto.getParentId();
        if (StringUtil.isNotBlank(parentId)) {
            if (parentId.equals(id)) {
                ExpUtil.throwEx("上级部门不能是自己!");
            }
            if (!ParamUtil.isDept(parentId)) {
                dto.setParentId(null);
            }
        }

        return init(dto);
    }

    /**
     * 参数初始化
     * 
     * @param dto
     * @return
     * @throws IOException 
     */
    public static Result<Boolean> init(Dept dto) throws IOException {
        return Result.success();
    }

    /**
     * 通过id修改状态
     * 
     * @param dto
     * @return
     * @throws IOException 
     */
    public static Result<Boolean> updateStatus(Dept dto) throws IOException {
        String id = dto.getId();
        if (StringUtil.isBlank(id)) {
            return Result.fail("ID不能为空！");
        }
        Integer status = dto.getStatus();
        if (StringUtil.isBlank(status)) {
            return Result.fail("状态不能为空！");
        }
        // 判断是否有查询权限
        ParamUtil.verifyDept(dto.getId());

        return Result.success();
    }

}